var util = require('util');

var ConfigError = function (message, extra) {
    Error.captureStackTrace(this, this.constructor);
    this.name = this.constructor.name;
    this.message = message;
    this.extra = extra;
};

util.inherits(ConfigError, Error);

function createConfig(config) {
    var env = process.env;

    config = Object.assign({
        username: env.TUNNELSSH_USER || env.USER || env.USERNAME || 'root',
        port: 22,
        host: null,
        srcPort: 0,
        srcHost: '127.0.0.1',
        dstPort: null,
        dstHost: '127.0.0.1',
        localHost: '127.0.0.1',
        localPort: config.dstPort,
        agent: process.env.SSH_AUTH_SOCK
    }, config || {})

    if (!config.host) {
        throw new ConfigError('host not set');
    }

    if (!config.dstPort) {
        throw new ConfigError('dstPort not set');
    }
    // debug('ssh-config', (function () {
    //     var hiddenValues = ['password', 'privateKey'];

    //     return Object.keys(config).reduce(function (obj, key) {
    //         if (hiddenValues.indexOf(key) === -1) {
    //             obj[key] = config[key];
    //         } else {
    //             obj[key] = '***HIDDEN***';
    //         }
    //         return obj;
    //     }, {});
    // })());

    return config;
}

module.exports = createConfig
// export default createConfig
